package com.aurora.leetcode.answer;

public class PalindromicNumber_9 {
    /**
     * 9、回文数
     * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
     * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
     * 例如，121 是回文，而 123 不是。
     * */

    //解法一：使用字符数组
    public boolean isPalindrome(int x) {
        char[] charArray = String.valueOf(x).toCharArray();
        int left = 0;
        if(charArray.length == 0){
            return false;
        }
//        else if (charArray.length == 1){
//            return true;
//        }
        int right = charArray.length-1;
        while(left < right){
            if(charArray[left++] == charArray[right--]){
                continue;
            }
            return false;
        }
        return true;
    }
    //解法二：使用java自带字符串反转方法
    public boolean isPalindrome2(int x){
        if(x < 0)return false;
        String s = String.valueOf(x);
        StringBuilder sb = new StringBuilder(s);
        String s1 = sb.reverse().toString();
        if(s.equals(s1)){
            return true;
        }
        return false;
    }

    //解法三: 对数字求余
    public static boolean isPalindrome3(int x){
        if(x < 0 || (x!=0 && x%10 == 0)){
            return false;
        } else if (x < 10) {
            return true;
        }
        int temp = 0;
        while(true){
            int num = x%10;
            x /= 10;
            temp =temp*10 +num;
            if(x <= temp) {
                break;
            }
        }
//        if(temp > x){
//            x = x*10 + temp%10;
//        }
        return x == temp || x == temp/10;
    }

//å



}
